package cn.ffcs.uec.organization.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import cn.ffcs.uec.common.vo.UecBdDefdoc;
import cn.ffcs.uec.organization.dao.UecOrgOrgsDao;
import cn.ffcs.uec.staffAndOutStaff.vo.StaffAndOutStaff;
import cn.ffcs.uom.common.constants.BaseUnitConstants;
import cn.ffcs.uom.common.model.UomEntity;
import cn.ffcs.uom.common.util.ApplicationContextUtil;
import cn.ffcs.uom.common.util.StrUtil;
import lombok.Getter;
import lombok.Setter;

/**
 * @Title:组织实体
 * @Description:
 * @Copyright: FFCS（C） 2017
 * @Company: FFCS
 * @author Wang Yiren
 * @Version 0.0.1 date:2017年12月11日
 * @since JDK1.6
 */
public class UecOrgOrgs extends UomEntity implements Serializable {

    private static final long serialVersionUID = 7385505880174533611L;

    /**
     * 组织标识
     */
    public Long getOrgId() {
        return super.getId();
    }

    public void setOrgId(Long orgId) {
        super.setId(orgId);
    }

    /**
     * 集团模型组织主键
     */
    @Getter
    @Setter
    private String pkOrg;

    /**
     * 帐期
     */
    @Getter
    @Setter
    private Long monthId;

    /**
     * 组织编码
     */
    @Getter
    @Setter
    private String code;

    /**
     * 创建时间
     */
    @Getter
    @Setter
    private String creationtime;

    /**
     * 创建人
     */
    @Getter
    @Setter
    private String creator;

    /**
     * 删除标示
     */
    @Getter
    @Setter
    private Long dr;

    /**
     * 启用状态
     */
    @Getter
    @Setter
    private Long enablestate;

    /**
     * 行政区划
     */
    @Getter
    @Setter
    private String glbdef12;

    /**
     * 机构等级
     */
    @Getter
    @Setter
    private String glbdef13;

    /**
     * 公司类型
     */
    @Getter
    @Setter
    private String glbdef2;

    /**
     * 公司性质
     */
    @Getter
    @Setter
    private String glbdef3;

    /**
     * 显示顺序
     */
    @Getter
    @Setter
    private Double glbdef6;

    /**
     * 服务区域
     */
    @Getter
    @Setter
    private String glbdef7;

    /**
     * 单位属性
     */
    @Getter
    @Setter
    private String glbdef8;

    /**
     * 单位层级
     */
    @Getter
    @Setter
    private String glbdef9;

    /**
     * 内部编码
     */
    @Getter
    @Setter
    private String innercode;

    /**
     * 是否业务单元数据
     */
    @Getter
    @Setter
    private String isbusinessunit;

    /**
     * 是否最新版本
     */
    @Getter
    @Setter
    private String islastversion;

    /**
     * 最后修改时间
     */
    @Getter
    @Setter
    private String modifiedtime;

    /**
     * 最后修改人
     */
    @Getter
    @Setter
    private String modifier;

    /**
     * 组织名称
     */
    @Getter
    @Setter
    private String name;

    /**
     * 组织机构代码
     */
    @Getter
    @Setter
    private String organizationcode;

    /**
     * 上级组织
     */
    @Getter
    @Setter
    private String pkFatherorg;

    /**
     * 版本主键
     */
    @Getter
    @Setter
    private String pkVid;

    /**
     * 负责人
     */
    @Getter
    @Setter
    private String principal;

    /**
     * 负责人（省内）leader
     */
    @Getter
    @Setter
    private String leader;

    /**
     * 组织简称
     */
    @Getter
    @Setter
    private String shortname;

    /**
     * 时间戳
     */
    @Getter
    @Setter
    private String ts;

    /**
     * 版本失效日期
     */
    @Getter
    @Setter
    private String venddate;

    /**
     * 版本名称
     */
    @Getter
    @Setter
    private String vname;

    /**
     * 版本生效日期
     */
    @Getter
    @Setter
    private String vstartdate;

    /**
     * 创建对象实例
     * 
     * @return
     */
    public static UecOrgOrgs newInstance() {
        return new UecOrgOrgs();
    }

    /**
     * 获取dao
     */
    public static UecOrgOrgsDao repository() {
        return (UecOrgOrgsDao) ApplicationContextUtil.getBean("uecOrgOrgsDao");
    }

    /**
     * 获取负责人--principal
     */
    public String getPrincipalName() {
        if (!StrUtil.isNullOrEmpty(this.getPrincipal())) {
            String sql = " SELECT * FROM  VIEW_SATFF_AND_OUTSATFF T WHERE T.PKPSNDOC = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(this.getPrincipal());
            List<StaffAndOutStaff> list = repository().jdbcFindList(sql, params, StaffAndOutStaff.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getStaffName();
            }
        }
        return "";
    }

    /**
     * 负责人（省内）leader
     */
    public String getLeaderName() {
        if (!StrUtil.isNullOrEmpty(this.getLeader())) {
            if ("无".equals(this.getLeader())) {
                return "无";
            } else {
                String sql = " SELECT * FROM  VIEW_SATFF_AND_OUTSATFF T WHERE T.PKPSNDOC = ? ";
                List<Object> params = new ArrayList<Object>();
                params.add(this.getLeader());
                List<StaffAndOutStaff> list = repository().jdbcFindList(sql, params, StaffAndOutStaff.class);
                if (list != null && list.size() > 0) {
                    return list.get(0).getStaffName();
                }
            }
        }
        return "";
    }

    /**
     * 获取单位层级--glbdef9
     */
    public String getGlbdef9Name() {
        if (!StrUtil.isNullOrEmpty(this.getGlbdef9())) {
            String sql = " SELECT * FROM  UEC_BD_DEFDOC T WHERE T.PK_DEFDOC = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(this.getGlbdef9());
            List<UecBdDefdoc> list = repository().jdbcFindList(sql, params, UecBdDefdoc.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getName();
            }
        }
        return "";
    }

    /**
     * 行政区划
     * 
     * @return
     */
    public String getGlbdef12Name() {
        if (!StrUtil.isNullOrEmpty(this.getGlbdef12())) {
            String sql = " SELECT * FROM  UEC_BD_DEFDOC T WHERE T.PK_DEFDOC = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(this.getGlbdef12());
            List<UecBdDefdoc> list = repository().jdbcFindList(sql, params, UecBdDefdoc.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getName();
            }
        }
        return "";
    }

    /**
     * 机构等级
     * 
     * @return
     */
    public String getGlbdef13Name() {
        if (!StrUtil.isNullOrEmpty(this.getGlbdef13())) {
            String sql = " SELECT * FROM  UEC_BD_DEFDOC T WHERE T.PK_DEFDOC = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(this.getGlbdef13());
            List<UecBdDefdoc> list = repository().jdbcFindList(sql, params, UecBdDefdoc.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getName();
            }
        }
        return "";
    }

    /**
     * 公司类型
     * 
     * @return
     */
    public String getGlbdef2Name() {
        if (!StrUtil.isNullOrEmpty(this.getGlbdef2())) {
            String sql = " SELECT * FROM  UEC_BD_DEFDOC T WHERE T.PK_DEFDOC = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(this.getGlbdef2());
            List<UecBdDefdoc> list = repository().jdbcFindList(sql, params, UecBdDefdoc.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getName();
            }
        }
        return "";
    }

    /**
     * 公司性质
     * 
     * @return
     */
    public String getGlbdef3Name() {
        if (!StrUtil.isNullOrEmpty(this.getGlbdef3())) {
            String sql = " SELECT * FROM  UEC_BD_DEFDOC T WHERE T.PK_DEFDOC = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(this.getGlbdef3());
            List<UecBdDefdoc> list = repository().jdbcFindList(sql, params, UecBdDefdoc.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getName();
            }
        }
        return "";
    }

    /**
     * 服务区域
     * 
     * @return
     */
    public String getGlbdef7Name() {
        if (!StrUtil.isNullOrEmpty(this.getGlbdef7())) {
            String sql = " SELECT * FROM  UEC_BD_DEFDOC T WHERE T.PK_DEFDOC = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(this.getGlbdef7());
            List<UecBdDefdoc> list = repository().jdbcFindList(sql, params, UecBdDefdoc.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getName();
            }
        }
        return "";
    }

    /**
     * 单位属性
     * 
     * @return
     */
    public String getGlbdef8Name() {
        if (!StrUtil.isNullOrEmpty(this.getGlbdef8())) {
            String sql = " SELECT * FROM  UEC_BD_DEFDOC T WHERE T.PK_DEFDOC = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(this.getGlbdef8());
            List<UecBdDefdoc> list = repository().jdbcFindList(sql, params, UecBdDefdoc.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getName();
            }
        }
        return "";
    }

    /**
     * 上级组织
     * 
     * @return
     */
    public String getPkFatherorgName() {
        if (!StrUtil.isNullOrEmpty(this.getPkFatherorg())) {
            String sql = " SELECT * FROM  UEC_ORG_ORGS T WHERE T.STATUS_CD = ? AND T.PK_ORG = ? ";
            List<Object> params = new ArrayList<Object>();
            params.add(BaseUnitConstants.ENTT_STATE_ACTIVE);
            params.add(this.getPkFatherorg());
            List<UecBdDefdoc> list = repository().jdbcFindList(sql, params, UecBdDefdoc.class);
            if (list != null && list.size() > 0) {
                return list.get(0).getName();
            }
        }
        return "";
    }

    /**
     * 启用状态
     * 
     * @return
     */
    public String getEnablestateName() {
        if (!StrUtil.isNullOrEmpty(this.getEnablestate())) {
            if ("1".equals(this.getEnablestate().toString())) {
                return "未启用";
            }
            if ("2".equals(this.getEnablestate().toString())) {
                return "已启用";
            }
            if ("3".equals(this.getEnablestate().toString())) {
                return "已停用";
            }
        }
        return "";
    }

    /**
     * 是否业务单元数据
     * 
     * @return
     */
    public String getIsbusinessunitName() {
        if (!StrUtil.isNullOrEmpty(this.getIsbusinessunit())) {
            if ("Y".equals(this.getIsbusinessunit())) {
                return "是";
            }
            if ("N".equals(this.getIsbusinessunit())) {
                return "否";
            }
        }
        return "";
    }
}
